অথেন্টিকেশন (Authentication) এবং অথরাইজেশন (Authorization) হল ওয়েব অ্যাপ্লিকেশনের নিরাপত্তার দুটি গুরুত্বপূর্ণ অংশ। অথেন্টিকেশন হল একটি ব্যবহারকারীকে চিহ্নিত করার প্রক্রিয়া, যেখানে ব্যবহারকারী তাদের পরিচয় প্রমাণ করে (যেমন, ইউজারনেম এবং পাসওয়ার্ড)। অন্যদিকে, অথরাইজেশন হল ব্যবহারকারীকে নির্দিষ্ট অ্যাক্সেস প্রদান করার প্রক্রিয়া, যেখানে নির্ধারণ করা হয় কোন ব্যবহারকারী কী করতে পারবে।
জেএসপি (JSP) এর মাধ্যমে অথেন্টিকেশন এবং অথরাইজেশন বাস্তবায়ন করতে হলে Java EE Security API এবং Servlet Container এর সাপোর্ট ব্যবহার করা যেতে পারে। এখানে আলোচনা করা হবে কীভাবে জেএসপি পেজে অথেন্টিকেশন এবং অথরাইজেশন কার্যকর করা যায়।
অথেন্টিকেশন (Authentication)
অথেন্টিকেশন হল ব্যবহারকারীর পরিচয় যাচাই করার প্রক্রিয়া। সাধারণত, এটি ইউজারনেম এবং পাসওয়ার্ড দিয়ে করা হয়। জেএসপি বা সাভলেট অ্যাপ্লিকেশনে ব্যবহারকারীকে সঠিকভাবে অথেন্টিকেট করতে ফর্ম বেসড অথেন্টিকেশন অথবা HTTP বেসড অথেন্টিকেশন ব্যবহার করা যেতে পারে।
ফর্ম বেসড অথেন্টিকেশন
এখানে ব্যবহারকারী একটি ফর্মে ইউজারনেম এবং পাসওয়ার্ড ইনপুট করে, এবং সার্ভার যাচাই করে তাদের পরিচয়।
HTML ফর্ম:
<!DOCTYPE html>
<html>
<head>
<title>Login Page</title>
</head>
<body>
<h2>Login Form</h2>
<form action="login.jsp" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="username" /><br><br>
<label for="password">Password:</label>
<input type="password" id="password" name="password" /><br><br>
<input type="submit" value="Login" />
</form>
</body>
</html>
login.jsp:
<%@ page import="java.sql.*, javax.servlet.*, javax.servlet.http.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
// সিম্পল ইউজার অথেন্টিকেশন (প্রকৃত অ্যাপ্লিকেশনে ডাটাবেস বা LDAP ব্যবহার করা উচিত)
if ("admin".equals(username) && "admin123".equals(password)) {
session.setAttribute("user", username);
response.sendRedirect("welcome.jsp");
} else {
out.println("<h3>Invalid Username or Password!</h3>");
}
%>
এখানে:
- ইউজারনেম এবং পাসওয়ার্ড যাচাই করা হয়।
- সঠিক হলে, ব্যবহারকারীকে
welcome.jspপেজে রিডিরেক্ট করা হয়।
অথরাইজেশন (Authorization)
অথরাইজেশন হল ব্যবহারকারীকে নির্দিষ্ট রিসোর্স বা কার্যকলাপে অ্যাক্সেস দেওয়ার প্রক্রিয়া। এর মাধ্যমে নির্ধারণ করা হয় কোন ব্যবহারকারী কী অ্যাক্সেস করতে পারবে। সাধারণত, অথরাইজেশন রোল বেসড অ্যাক্সেস কন্ট্রোল (RBAC) এর মাধ্যমে করা হয়।
রোল বেসড অথরাইজেশন
জেএসপি পেজে রোল বেসড অথরাইজেশন বাস্তবায়ন করার জন্য, ব্যবহারকারীকে তার রোল অনুযায়ী অ্যাক্সেস দেওয়া হয়। উদাহরণস্বরূপ, একটি অ্যাডমিন ইউজার কেবল অ্যাডমিন পেজে অ্যাক্সেস পাবে, এবং সাধারণ ইউজার শুধুমাত্র সাধারণ পেজে প্রবেশ করতে পারবে।
welcome.jsp:
<%@ page import="javax.servlet.http.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String user = (String) session.getAttribute("user");
if (user == null) {
response.sendRedirect("login.jsp");
} else {
out.println("<h3>Welcome, " + user + "</h3>");
if ("admin".equals(user)) {
out.println("<a href='admin.jsp'>Go to Admin Panel</a>");
} else {
out.println("<a href='user.jsp'>Go to User Dashboard</a>");
}
}
%>
এখানে:
- ব্যবহারকারীর রোল যাচাই করা হচ্ছে। যদি ইউজার অ্যাডমিন হয়, তাকে অ্যাডমিন প্যানেলে অ্যাক্সেস দেওয়া হচ্ছে।
- সাধারণ ইউজারের জন্য আলাদা পেজ প্রদান করা হচ্ছে।
web.xml ফাইলে অথেন্টিকেশন ও অথরাইজেশন কনফিগারেশন
JSP অ্যাপ্লিকেশনে সাধারণত web.xml ফাইলে অথেন্টিকেশন এবং অথরাইজেশন কনফিগারেশন করা হয়।
<web-app>
<security-constraint>
<web-resource-collection>
<web-resource-name>Admin Area</web-resource-name>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/login-error.jsp</form-error-page>
</login-config>
<security-role>
<role-name>admin</role-name>
</security-role>
<security-role>
<role-name>user</role-name>
</security-role>
</web-app>
এখানে:
/admin/*URL প্যাটার্নের জন্য অ্যাডমিন রোলের অনুমতি দেওয়া হয়েছে।- ফর্ম বেসড অথেন্টিকেশন পদ্ধতি ব্যবহার করা হয়েছে।
সার্ভার সাইড অথেন্টিকেশন ও অথরাইজেশন
JSP অ্যাপ্লিকেশনটি যদি টমক্যাট বা অন্য কোনো সার্ভারে হোস্ট করা হয়, তবে সার্ভার সাইড অথেন্টিকেশন এবং অথরাইজেশন নিয়ন্ত্রণ করার জন্য নিরাপত্তা কনফিগারেশন করতে হবে। উদাহরণস্বরূপ, টমক্যাটের conf/context.xml ফাইলে ডাটাবেস কানেকশন, ইউজার অথেন্টিকেশন এবং অথরাইজেশন কনফিগার করা যেতে পারে।
সারাংশ:
জেএসপি (JSP) এ অথেন্টিকেশন এবং অথরাইজেশন হল দুটি গুরুত্বপূর্ণ নিরাপত্তা বৈশিষ্ট্য। অথেন্টিকেশন ব্যবহারকারীর পরিচয় যাচাই করার প্রক্রিয়া এবং অথরাইজেশন ব্যবহারকারীকে নির্দিষ্ট রিসোর্সে প্রবেশের অনুমতি দেয়। জেএসপি অ্যাপ্লিকেশনে ফর্ম বেসড অথেন্টিকেশন, রোল বেসড অথরাইজেশন এবং web.xml কনফিগারেশন ব্যবহার করে এই দুটি কার্যক্রম বাস্তবায়ন করা যায়।
Read more